#ifndef SERIALUI_H
#define SERIALUI_H
#include <QDialog>
#include <QSerialPortInfo>
#include <QMessageBox>
#include <QSerialPort>
#include "serialparser.h"
#include <QThread>
#include <QDebug>
#include <QSettings>
#include <QStandardItemModel>
#include <QTableView>
#include "tabledialog.h" // 引入表格对话框头文件
// 串口参数结构体
// 串口参数结构体定义
//struct serialPara_t {
//    QString portName;   // 串口号
//    int baudRate;       // 波特率
//    int dataBits;       // 数据位
//    int stopBits;       // 停止位
//    int parity;         // 校验位
//    QString flowControl; // 流控
//};

namespace Ui {
class SerialUI;
}

class SerialUI : public QDialog {
    Q_OBJECT

public:
    explicit SerialUI(QWidget *parent = nullptr); // 构造函数
    ~SerialUI();                                  // 析构函数

public slots:
    void startThread();   // 启动串口线程
    void stopThread();    // 停止串口线程
    void showTableView(); // 显示表格
signals:
    void rawSerialDataReceived(const QString &rawData); // 发送串口数据的信号
    void threadStatusChanged(bool isRunning); // 信号：向tool发射状态改变
private slots:
    void onDataParsed(const QString &parsedData); // 数据解析完成时的槽
    void onThreadFinished(); // 线程完成时的槽
    void onOkClicked();      // 点击 OK 按钮时的槽

    void onThreadStarted();//

private:
    Ui::SerialUI *ui;             // UI 指针
    QThread *m_thread = nullptr;  // 串口线程
    QSerialPort *m_serialPort = nullptr; // 串口对象
    serialparser *m_serialParser = nullptr; // 串口数据解析器
    TableDialog *tableDialog=nullptr; // 非模态对话框

   void updateSerialPorts(); // 更新串口列表的槽
   void setupTableView(); // 初始化表格
};

#endif // SERIALDIALOG_H
